package org.Proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyUtil {
    public static Star createProxy(BigStar bigStar) {
        Star star = (Star) Proxy.newProxyInstance(
                ProxyUtil.class.getClassLoader(),//类加载器
                new Class[]{Star.class},//接口
                //代理对象 干啥事
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
/*
参数一：代理对象
参数二：运行时方法
参数三：传递方法的参数
 */
                        if (method.getName().equals("dance")) {
                            System.out.println("准备场地");
                        } else if (method.getName().equals("sing")) {
                            System.out.println("准备话筒");
                        }
                        return method.invoke(bigStar, args);
                    }
                }
        );
        return star;
    }
}
